package com.jade.journal.desc.field.types;

import com.jade.framework.base.text.Escaper;

/**
 * 字符数组
 *
 * @author fengyun
 * @version Jan 11, 2003 7:52:42 PM
 */
public class CharArrayType extends StringType
{

    private static CharArrayType instance = new CharArrayType();

    /** 构造 */
    private CharArrayType()
    {
        super("CharArray");
    }

    /** 返回实例 */
    public static CharArrayType getInstance()
    {
        return instance;
    }

    protected CharArrayType(String name)
    {
        super(name);
    }

    /**
     * 将指定的数据转换成对象
     *
     * @param data 字节数组
     * @param off  起始位置
     * @param len  长度
     * @return 返回对象
     */
    public Object getObject(byte[] data, int off, int len)
    {
        return getCharArray(data, off, len);
    }

    /**
     * 指定数据转换成字符数组
     *
     * @param data 字节数组
     * @param off  起始位置
     * @param len  长度
     * @return 返回字符数组
     */
    public char[] getCharArray(byte[] data, int off, int len)
    {
        return getString(data, off, len).toCharArray();
    }

    /**
     * 指定数据转换成字符数组
     *
     * @param data 字节数组
     * @param off  起始位置
     * @param len  长度
     * @param enc  字符集
     * @return 返回字符数组
     */
    public char[] getCharArray(byte[] data, int off, int len, String enc)
    {
        return getString(data, off, len, enc).toCharArray();
    }

    /**
     * 指定数据转换成字符数组
     *
     * @param data    字节数组
     * @param escaper 忽略
     * @return
     */
    public char[] getCharArray(byte[] data, Escaper escaper)
    {
        return getCharArray(data, 0, data.length, escaper);
    }

    /**
     * 指定数据转换成字符数组
     *
     * @param data    字节数组
     * @param off     起始位置
     * @param len     长度
     * @param escaper 忽略
     * @return
     */
    public char[] getCharArray(byte[] data, int off, int len, Escaper escaper)
    {
        return getCharArray(data, off, len, "8859_1", escaper);
    }

    /**
     * 指定数据转换成字符数组
     *
     * @param data    字节数组
     * @param off     起始位置
     * @param len     长度
     * @param enc     字符集
     * @param escaper 忽略
     * @return
     */
    public char[] getCharArray(byte[] data, int off, int len, String enc, Escaper escaper)
    {
        return getString(data, off, len, enc, escaper).toCharArray();
    }

    /**
     * 将指定的数据转换成对象
     *
     * @param data 字符数组
     * @param off  起始位置
     * @param len  长度
     * @return 返回对象
     */
    public Object getObject(char[] data, int off, int len)
    {
        char[] chars = new char[len];
        System.arraycopy(data, off, chars, 0, len);
        return chars;
    }
}
